using System.ServiceModel;
using Bookvar.ObjectModel;
using Bookvar.ObjectModel.Actions.Collaboration;

namespace Bookvar.Collaboration.ClientSide
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public partial class CollaborationProxy : DuplexClientBase<ICollaborationService>, ICollaborationService
    {

        public CollaborationProxy(System.ServiceModel.InstanceContext callbackInstance, string host)
            :
                base(callbackInstance)
        {
            Endpoint.Address = new System.ServiceModel.EndpointAddress(Endpoint.Address.Uri.AbsoluteUri.Replace("localhost", host));
        }

        //public CollaborationProxy(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName)
        //    :
        //        base(callbackInstance, endpointConfigurationName)
        //{
        //}

        //public CollaborationProxy(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, string remoteAddress)
        //    :
        //        base(callbackInstance, endpointConfigurationName, remoteAddress)
        //{
        //}

        //public CollaborationProxy(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress)
        //    :
        //        base(callbackInstance, endpointConfigurationName, remoteAddress)
        //{
        //}

        //public CollaborationProxy(System.ServiceModel.InstanceContext callbackInstance, System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress)
        //    :
        //        base(callbackInstance, binding, remoteAddress)
        //{
        //}

        public System.IAsyncResult BeginJoin(string name, System.AsyncCallback callback, object asyncState)
        {
            return base.Channel.BeginJoin(name, callback, asyncState);
        }

        public UserJoinResponse EndJoin(System.IAsyncResult result)
        {
            return base.Channel.EndJoin(result);
        }

        public void Leave()
        {
            base.Channel.Leave();
        }

        public void ProcessAction(ActionBase action)
        {
            base.Channel.ProcessAction(action);
        }

        public MindMap GetMindmap()
        {
            return base.Channel.GetMindmap();
        }
    }
}
